package com.cskaoyan.mapper;

import com.cskaoyan.module.pojo.MarketCart;
import com.cskaoyan.module.pojo.MarketCartExample;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public interface MarketCartMapper {
    long countByExample(MarketCartExample example);

    int deleteByExample(MarketCartExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(MarketCart record);

    int insertSelective(MarketCart record);

    List<MarketCart> selectByExample(MarketCartExample example);

    MarketCart selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") MarketCart record, @Param("example") MarketCartExample example);

    int updateByExample(@Param("record") MarketCart record, @Param("example") MarketCartExample example);

    int updateByPrimaryKeySelective(MarketCart record);

    int updateByPrimaryKey(MarketCart record);
    //查询这个购物车所有物品的总量
    int selectCountNumber();
    //查询这个购物车所有物品价格总和
    double selectCountAmount();
    //查询这个购物车被选中的物品个数
    Integer selectCheckedCount();
    //查询这个购物车被选中的价格
    Double selectCheckedAmount();
    //更新被选中的状态
    void updateChecked(@Param("ids") List<Integer> productIds);
    //取消被选中的状态
    void updateCheckedBack(@Param("ids") List<Integer> productIds);
    //update数量用productId
    void updateById(@Param("number") Integer number, @Param("goodsId") Integer id);
    //查询是否有商品
    int selectTotalNumber(@Param("id") Integer productId);
    //如果购物车已经有该物品，则做update
    void updateEixtGoods(@Param("productId") Integer productId,@Param("number") Integer number);
    //购物车没有就插入数据
    void insertNoEistData(@Param("id") Integer id,@Param("goodId") Integer goodsId,@Param("goodSn") String goodsSn,
                          @Param("goodName") String name,@Param("productId") Integer productId,@Param("price") BigDecimal price,
                          @Param("number") Integer number,@Param("spec") String[] specifications,@Param("url") String picUrl);
    //根据productId来删除购物车
    int deleteByProdeuctId(@Param("productId") List<Integer> productIds);

    List<MarketCart> selectByUserId(@Param("id") Integer id);



    int selectPriceByproductId(Integer id);

    Integer  selectIdBygoodsIdAndProductId(@Param("goodsid") Integer goodsId,@Param("proId") Integer productId);

//    int insertAllData(@Param("id") Integer id,@Param("goodsId") Integer goodsId,
//                       @Param("goodsSn")String goodsSn,
//                       @Param("goodname")String name,
//                       @Param("productid")Integer productId,
//                       @Param("price")BigDecimal price,
//                       @Param("number")Integer number,
//                       @Param("spec")String[] specifications,
//                       @Param("pic")String picUrl,
//                       @Param("addt")Date addTime,
//                       @Param("updatet")Date updateTime);

    void updateByIdNumber(@Param("number") Integer number,@Param("goodid") Integer goodsId);


    Integer selectIdByGoodsId(@Param("goodid") Integer goodsId);

    Integer selectByIdGoodId(@Param("goodid") Integer goodsId);

    List<MarketCart> selectByCartId(@Param("carId") Integer cartId);

    Long selectPriceCartId(@Param("cartId") Integer cartId);

    int insertAllData(MarketCart marketCart1);

    Integer[] selectByUserIdChecked(Integer id);

    Double selectPrice();

    Integer selectNumber();

    Integer[] selectByProductIdCheck();

    Double selectByProductIdAmount();

    Integer selectBYProductCount();

    void updateCheckedCanson(List<Integer> productIds);
}